package co.yixiang.yshop.module.product.service.storeproduct.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;


/**
 * 商品对象DTO
 *
 * @author hupeng
 * @date 2020-04-23
 */
@Getter
@Setter
@ToString
public class StoreProductDTO {

    /**
     * 商品id
     */
    private Long id;


    /**
     * 商品图片
     */
    @NotBlank(message = "商品图片必传")
    private String image;

    /**
     * 轮播图
     */
    @NotNull(message = "轮播图不为空")
    @JsonProperty("slider_image")
    private List<String> sliderImage;

    /**
     * 商品名称
     */
    @NotBlank(message = "商品名称不能为空")
    @JsonProperty("store_name")
    private String storeName;

    /**
     * 商品简介
     */
    @JsonProperty("store_info")
    @Size(max = 200, message = "商品简介不能超过200字符")
    private String storeInfo;

    /**
     * 关键字
     */
    @NotBlank(message = "关键字不能为空")
    private String keyword;

    /**
     * 商品条码（一维码）
     */
    @JsonProperty("bar_code")
    private String barCode;

    /**
     * 分类id
     */
    @NotNull(message = "分类id不能为空")
    @JsonProperty("cate_id")
    private Long cateId;

    /**
     * 商品价格
     */
    private Double price;

    /**
     * 市场价
     */
    private Double otPrice;

    /**
     * 邮费
     */
    private Double postage;

    /**
     * 单位名
     */
    @JsonProperty("unit_name")
    private String unitName;

    /**
     * 排序
     */
    private Long sort;

    /**
     * 销量
     */
    private Long sales;

    /**
     * 库存
     */
    private Long stock;

    /**
     * 状态（0：未上架，1：上架）
     */
    @JsonProperty("is_show")
    private Integer isShow;

    /**
     * 是否热卖
     */
    @JsonProperty("is_hot")
    private Integer isHot;

    /**
     * 是否优惠
     */
    @JsonProperty("is_benefit")
    private Integer isBenefit;

    /**
     * 是否精品
     */
    @JsonProperty("is_best")
    private Integer isBest;

    /**
     * 是否新品
     */
    @JsonProperty("is_new")
    private Integer isNew;

    /**
     * 商品描述
     */
    @NotBlank(message = "商品详情不能为空")
    private String description;


    /**
     * 是否包邮
     */
    @JsonProperty("is_postage")
    private Integer isPostage;

    /**
     * 获得积分
     */
    @JsonProperty("give_integral")
    private Double giveIntegral;

    /**
     * 成本价
     */
    private Double cost;


    /**
     * 是否优品推荐
     */
    @JsonProperty("is_good")
    private Integer isGood;

    /**
     * 是否单独分佣
     */
    @JsonProperty("is_sub")
    private Integer isSub;

    /**
     * 是否开启啊积分兑换
     */
    @JsonProperty("is_integral")
    private Integer isIntegral;

    /**
     * 虚拟销量
     */
    private Long ficti;

    /**
     * 运费模板ID
     */
    @JsonProperty("temp_id")
    private Long tempId;

    /**
     * 规格 0单 1多
     */
    @JsonProperty("spec_type")
    private Integer specType;

    //属性项目
    private List<FormatDetailDTO> items;

    //sku结果集
    private List<ProductFormatDTO> attrs;


    /**
     * 是否分销:0-否，1-是
     */
    private Integer isDistribution;


    // 分销规则 0-默认 1-自定义
    @Schema(description = "分销规则 0-默认 1-自定义")
    private Integer distributionRule;

    @Schema(description = "分销等级 1-一级 2-二级")
    private Integer distributionLevel;

    // 分销自购 0-关闭 1-开启
    @Schema(description = "分销自购 0-关闭 1-开启")
    private Integer distributionPurchase;

    // 商品结算方式 0-实际支付价格 1-商品价格
    @Schema(description = "商品结算方式 0-实际支付价格 1-商品价格")
    private Integer distributionProductSettlement;

    // 佣金结算方式 0-支付后结算 1-确认收获后结算 2-订单完成结算
    @Schema(description = "佣金结算方式 0-支付后结算 1-确认收获后结算 2-订单完成结算")
    private Integer distributionWagesSettlement;

    @Schema(description = "商品标签id")
    private Long productTagId;


}
